# 封装代理IP类
from settings import MAX_SCORE
from utils.formats import dict_to_equal_str


class Proxy(object):
    def __init__(self, ip, port, protocol=-1, nick_type=-1, speed=-1, area='', score=MAX_SCORE, disable_domains=''):
        """
        :param ip: ip地址
        :param port: ip端口号
        :param protocol: ip支持的协议 0:http 1:https 2:http&https
        :param nick_type: ip匿名程度 0:高匿 1:匿名 2:透明
        :param speed: ip响应速度 单位s
        :param area: ip所在区域
        :param score: ip可用性评分
        :param disable_domains: ip不可用域名表
        """
        self.ip = ip
        self.port = port
        self.protocol = protocol
        self.nick_type = nick_type
        self.speed = speed
        self.area = area
        self.score = score
        self.disable_domains = disable_domains

    def get_values_str(self):
        """
        将属性按顺序转换为以逗号分隔的字符串并返回
        :return: 转化后的字符串
        """
        values = ''
        for key in self.__dict__.keys():
            if type(self.__dict__[key]) == str:
                # 字符串加上单引号
                values = values + f"'{str(self.__dict__[key])}'" + ','
            else:
                values = values + str(self.__dict__[key]) + ','
        values = values.rstrip(',')
        return values

    def get_equal_str(self):
        """
        获取set语句后面填写的内容, 即获取'属性 = 值, ...'的格式字符串
        :return: 返回'属性 = 值, ...'的格式字符串
        """
        return dict_to_equal_str(self.__dict__)

    def __str__(self):
        return str(self.__dict__)


if __name__ == '__main__':
    proxy = Proxy(1122, 888)
    print(proxy.get_values_str())
    print(proxy.get_equal_str())
